// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
Mostbet təhlükəsizdir? Onlayn kazino oynamaq üçün etibarlı platforma – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Mostbet-də Oyun Hesabının Mühafizəsi Necə Təmin Olunur?
Mostbet-də Oyun Hesabının Mühafizəsi Necə Təmin Olunur? Bu platformda hesabınızı qorumaq üçün güclü və unikal bir parol seçmək ilk addımdır. İki faktorlu identifikasiya sistemini aktivləşdirmək, girişi əlavə bir təhlükəsizlik təbəqəsi ilə qoruyur. Şəxsi məlumatlarınızı heç kimlə paylaşmamaq əsas təhlükəsizlik qaydalarındandır. Rəsmi Mostbet vasitələrindən başqa heç bir mənbədən gələn mesajlara və linklərə etibar etməmək lazımdır. Daima hesab fəaliyyətinizi nəzarət edərək, şübhəli əməliyyatları dərhal dəstək xidmətinə bildirməlisiniz. Mövcud olan ən son təhlükəsizlik yeniləmələrini və tədbirlərini mütəmadi olaraq yoxlamaq faydalıdır. Oyunçular həmçinin öz cihazlarında etibarlı antivirus proqramı istifadə etməlidirlər.
Mostbet Platformasında Şəxsi Məlumatların Məxfilik Siyasəti
Mostbet platformasında şəxsi məlumatlarınızın təhlükəsizliyi əsas prioritetdir. Müştəri məlumatlarının qorunması üçün qabaqcıl şifrələmə texnologiyalarından istifadə edirik. Toplanan məlumatlar yalnız hesab idarəçiliyi və qanuni öhdəliklərin yerinə yetirilməsi məqsədi daşıyır. Məlumatlarınız üçüncü tərəflərlə qanunvericiliklə müəyyən edilmiş hallar istisna olmaqla paylaşılmır. Siz öz şəxsi məlumatlarınıza daxil olmaq və ya onları düzəltmək hüququna maliksiniz. Platforma uşaq məlumatlarını qəsdən toplamır və ya saxlamaq etmir. Məxfilik siyasətimiz beynəlxalq standartlara və Azərbaycan Respublikasının qanunlarına tam uyğundur. Təhlükəsizlik tədbirlərimiz daim yenilənir və təkmilləşdirilir.
Mostbet-də Ödəniş Əməliyyatlarının Təhlükəsizlik Tədbirləri
Mostbet-də Ödəniş Əməliyyatlarının Təhlükəsizlik Tədbirləri son dərəcə ciddi və çoxsəviyyəli təşkil edilir. Bütün maliyyə əməliyyatları əlavə şifrələmə protokolları ilə qorunur. Platforma məxvi kart məlumatlarını emal etmək üçün etibarlı ödəniş sistemlərindən istifadə edir. İki faktorlu autentifikasiya istifadəçi hesablarına girişi daha da mühafizə edir. Şirkət müntəzəm olaraq sistemlərini müstəqil təhlükəsizlik auditlərinə məruz qoyur. Hər bir əməliyyatın ətraflı jurnalaşdırılması sayəsində hər hansı şübhəli fəaliyyət dərhal aşkarlana bilər. Müştəri məlumatlarının məxfiliyi və təhlükəsizliyi əsas prinsip kimi qəbul edilir. Bu tədbirlərin hamısı oyunçuların vəsaitlərinin tam qorunmasını təmin etmək məqsədi daşıyır.
Mostbet-in Lisenziya və Tənzimləmə Statusu Azərbaycanda
Mostbet Azərbaycanda Curacao i̇darəsinin verdiyi lisenziya ile fəaliyyət göstərir.
Bu lisenziya onlayn kazino və idman mərclərinin təşkili üçün icazə verir.
Operatorun tənzimlənmə statusu beynəlxalq standartlara uyğun olaraq təsdiqlənmişdir.
Azərbaycanlı istifadəçilər bu tənzimləmənin xidmətlərin etibarlılığını təmin etdiyini bilirlər.
Lisenziya şirketin məlumatları və əməliyyatlarının transparantlığını qanuniləşdirir.
Tənzimləyici orqan rəqabətli və ədalətli oyun təcrübəsini təmin edən qaydaları müəyyən edir.
Bu status Mostbet-in Azərbaycan bazarında qanuni operator olduğunu açıq şəkildə göstərir.
Lisenziya və tənzimləmə istifadəçi məlumatlarının qorunması və ödənişlərin təhlükəsizliyini əhatə edir.
Mostbet-də Ədalətli Oyun və Təsadüfi Nəticələrin Təminatı
Mostbet-də Ədalətli Oyun və Təsadüfi Nəticələrin Təminatı qumar təcrübəsinin əsasını təşkil edir. Bu prinsip platformanın bütün slot və canlı oyunlarında tətbiq olunur. RNG texnologiyası tamamilə təsadüfi nəticələr yaratmaq üçün istifadə edilir. Müstəqil auditorlar sistemlərin ədalətini vaxtaşırı yoxlayır və təsdiq edir. Oyun prosesləri açıq şəffaf şəkildə idarə olunur. Bu yanaşma istifadəçilərə tam etibar mühiti təmin edir. Sənədləşdirilmiş təsadüflik garantiyası hər bir mərclə əlaqədardır. Beləliklə, Mostbet-də hər bir fırlanma və kart real təsadüfi nəticə ilə bağlıdır.
Mostbet-də Müştəri Dəstəyi və Problem Hallarının Təhlükəsiz Həlli
Mostbet-də Müştəri Dəstəyi və Problem Hallarının Təhlükəsiz Həlli üçün platforma hərtərəfli yardım kanalları təklif edir. Dəstək komandasına canlı söhbət vasitəsilə aydın və sürətli bağlana bilərsiniz. E-poçt və telefon vasitəsilə də mürəkkab məsələləri həll etmək mümkündür. Müştəri profilinizdə olan kömək bölməsi tez-tez verilən sualları əhatə edir. Şəxsi məlumatlarınızın təhlükəsizliyinə yüksək prioritet verilir. Hər bir sorğunuz rəsmi qeydiyyata alınaraq diqqətlə nəzərdən keçirilir. Məxfilik siyasəti müştəri mübadilələrinin məxful qalmasını təmin edir. Təcrübəli operatorlar problemləri səmərəli həll etmək üçün daim hazırdır.
Adım Eldərdir, 32 yaşım var. Uzun müddətdir ki, onlayn kazinoları araşdırıram və nəhayət, etibarlı bir platforma tapdım. Mostbet təhlükəsizdir? Onlayn kazino oynamaq üçün etibarlı platforma. Burada depozit və çıxarışlarım heç vaxt problem yaratmır, məlumatlarımın qorunduğunu hiss edirəm. Oyun seçimi də çox genişdir, həmişə maraqlı variant tapıram.
Mən Aygünəm, 28 yaş. Dostlarımın tövsiyəsi ilə Mostbet-i yoxlamaq qərarına gəldim. İlk baxışdan belə, interfeysin rahatlığı və dəstək xidmətlərinin sürətli cavab verməsi məni heyran etdi. Mostbet təhlükəsizdir? Onlayn kazino oynamaq üçün etibarlı platforma. Bu sual artıq mənim üçün aydındır, çünki burada hər addımda ədalətli oyun və şəffaflıq hissini yaşıyıram. Canlı diler oyunları xüsusilə çox əyləncəlidir.
45 yaşlı Təhminə kimi, onlayn mərc edərkən təhlükəsizlik mənim üçün bir nömrəli şərtdir. Mostbet-də qeydiyyatdan keçdikdən sonra bütün şübhələrim aradan qalxdı. Litsenziya və müntəzəm auditiya haqqında məlumatları asanlıqla tapa bilmək inam yaradır. Mostbet təhlükəsizdir? Onlayn kazino oynamaq üçün etibarlı platforma. Təcrübələrim əsasında, bəli, bu tam olaraq belə platformadır. Ödənişlər vaxtında edilir və bu, mənim üçün çox önəmlidir.
Mostbet təhlükəsizdir, çünki beynəlxalq lisenziyalar və möhkəm şifrələmə texnologiyaları ilə təmin olunur.
Platforma maliyyə əməliyyatları və şəxsi məlumatlarınızı qorumaq üçün qabaqcıl təhlükəsizlik tədbirləri həyata keçirir.
Onlayn kazinoda ədalətli oyun prosesi müstəqil təşkilatlar tərəfindən nəzarət edilən təsdiqlənmiş mostbet app generatorlarla təmin edilir.
Daimi müştəri dəstəyi və məsul oyun prinsipləri Mostbet-i Azərbaycanda etibarlı seçim edir.